home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-02-17 | 2.9 KB | 169 lines | [TEXT/MMCC] |
- /*
- * x.c ©1993 Jon Wätte (h+@nada.kth.se) All Rights Reserved
- *
- * Please read the paragraph marked $$$ in x.h before you use this source
- * file.
- *
- * This file may be used and distributed for free, if certain conditions
- * are met. These conditions are outlined in the accompanying file x.h.
- * This file may NOT be distributed if it is in any way modified from the
- * original as distributed by Jon Wätte. Also it may only be distributed
- * accompanying the file x.h. See x.h for details.
- *
- * v1.0 930826 - Initial release
- * v1.1 940121 - TCL replacement version
- */
-
- #include <Dialogs.h>
- #include <SegLoad.h>
-
- #include "Exceptions.h"
-
-
- long
- SpecifyMsg ( short suite , short id ) {
- if ( suite < 1024 ) {
- suite += 1024 ;
- }
- return ( ( unsigned long ) suite << 16 ) + id ;
- }
-
-
- jmp_buf * __cur_buf = NULL ;
- #ifdef FAILINFO
- char * __err_file = NULL ;
- int __err_line = 0 ;
- #endif
-
- short gLastError ;
- long gLastMessage ;
- Boolean gBreakFailure ;
-
- static void
- UncaughtException ( void ) {
-
- #if DEBUG
- // Check __err_file and __err_line if available!
- DebugStr ( "\pException uncaught!" ) ;
- #endif
-
- // At least give the user SOME feedback before quitting
-
- ParamText ( "\pUnhandled error!" , NULL , NULL , NULL ) ;
- Alert ( 128 , NULL ) ;
- ExitToShell ( ) ;
- }
-
-
- #ifdef FAILINFO
- void
- __FailNil ( void * p , char * file , int line ) {
- if ( ! p ) {
- __err_file = file ;
- __err_line = line ;
- gLastMessage = 0 ;
- gLastError = -108 ;
- #if DEBUG
- if ( gBreakFailure ) {
- Debugger ( ) ;
- }
- #endif
- if ( __cur_buf ) {
- longjmp ( * __cur_buf , -108 ) ;
- }
- UncaughtException ( ) ;
- }
- }
-
-
- void
- __FailErr ( short err , char * file , int line ) {
- if ( err ) {
- __err_file = file ;
- __err_line = line ;
- gLastMessage = 0 ;
- gLastError = err ;
- #if DEBUG
- if ( gBreakFailure ) {
- Debugger ( ) ;
- }
- #endif
- if ( __cur_buf ) {
- longjmp ( * __cur_buf , err ) ;
- }
- UncaughtException ( ) ;
- }
- }
-
-
- void
- __Failure ( short err , long message , char * file , int line ) {
- __err_file = file ;
- __err_line = line ;
- gLastMessage = 0 ;
- gLastError = err ;
- #if DEBUG
- if ( gBreakFailure ) {
- Debugger ( ) ;
- }
- #endif
- if ( __cur_buf ) {
- longjmp ( * __cur_buf , err ) ;
- }
- UncaughtException ( ) ;
- }
-
- #else
- void
- FailNil ( void * p ) {
- gLastError = -108 ;
- gLastMessage = 0 ;
- if ( ! p ) {
- #if DEBUG
- if ( gBreakFailure ) {
- Debugger ( ) ;
- }
- #endif
- if ( __cur_buf ) {
- longjmp ( * __cur_buf , -108 ) ;
- }
- }
- UncaughtException ( ) ;
- }
-
-
- void
- FailErr ( short err ) {
- gLastError = err ;
- gLastMessage = 0 ;
- if ( err ) {
- #if DEBUG
- if ( gBreakFailure ) {
- Debugger ( ) ;
- }
- #endif
- if ( __cur_buf ) {
- longjmp ( * __cur_buf , err ) ;
- }
- UncaughtException ( ) ;
- }
- }
-
-
- void
- Failure ( short err , long message ) {
- gLastError = err ;
- gLastMessage = message ;
- #if DEBUG
- if ( gBreakFailure ) {
- Debugger ( ) ;
- }
- #endif
- if ( __cur_buf ) {
- longjmp ( * __cur_buf , err ) ;
- }
- UncaughtException ( ) ;
- }
-
- #endif
-